


/*
 * static
 * 1.存储于方法区
 * 2.通过类名来调用
 * 3.被静态修饰得成员属于静态成员（类变量） 不属于某个具体的对象，是所有对象所共有的
 * 4.生命周期伴随类的一生
 * 5.静态方法里面不能直接访问非静态的 通过对象的引用来访问非静态的
 *
 * 静态变量的初始化
 * 1.就地初始化
 * 2.静态代码块初始化
 * 代码块(用{}起来的就叫代码块)
 * 1.普通代码块(本地代码块)
 * 2.构造块(实例代码块)
 * 在类的里面方法的外面
 * 3.静态块
 * 4.同步代码块
 * 静态代码块优先执行(按先后顺序 类加载才会执行) 有实例化对象才执行实例代码块(也是按先后顺序) 最后才是构造方法  静态代码块只执行一次
 * */
class Student {
    public String name;

    public static String classes = "Java105";//就地初始化


    //静态方法  也叫类方法
    public static void run() {
        System.out.println("hello");
    }
    public void func() {
        System.out.println(this);
    }

    {

        classes = "Java105";
        System.out.println("实例代码块!");
    }

    static {
        classes = "Java105";
        System.out.println("静态代码块!");
    }


}
public class Test3 {

    public static void main(String[] args) {
        Student student = new Student();
       /* System.out.println(student.name);
        System.out.println(Student.classes);
        Student.run();*/

        student.func();
    }

}
